#include "maininterface.h"
#include"logindialog.h"
#include"CreateConnection.h"
#include"registerdialog.h"
#include <QApplication>
#include<QMessageBox>
#include<QDebug>

//#pragma push_macro("slots")
//#undef slots
//#include <Python.h>
//#pragma pop_macro("slots")

//int testPython(){
//    //初始化Python解释器，这是调用操作的第一步
//     Py_Initialize();
//     if( !Py_IsInitialized() ){
//        return -1;
//     }

//    //执行单句Python语句，用于给出调用模块的路径，否则将无法找到相应的调用模块
//     PyRun_SimpleString("import sys");
//     PyRun_SimpleString("sys.path.append('./')");

//    //获取qt_python_fun.py模块的指针
//     PyObject* pModule = PyImport_ImportModule("qt_python_fun");
//     if (! pModule){
//     qDebug()<<"Can't open python file\n";
//        return -1;
//     }

//    //获取hello函数的指针
//     PyObject* pFunhello = PyObject_GetAttrString(pModule,"hello");
//     if (!pFunhello){
//     qDebug()<<"Get function hello failed\n";
//        return -1;
//     }

//    //调用函数，传入参数为NULL
//     PyObject_CallFunction(pFunhello,NULL);

//    //销毁Python解释器，这是调用的最后一步
//     Py_Finalize();
//}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    //连接数据库
    if (!CreateConnection()){
        //QMessageBox::warning(nullptr, "信息提示", "不能建立数据库连接！",  QMessageBox::Yes);

        QMessageBox* databaseInformationBox = new QMessageBox(QMessageBox::Critical, ("信息提示"),  ("不能建立数据库连接！"), QMessageBox::Yes);
        auto button =  databaseInformationBox->exec();
        if(button == QMessageBox::Yes){
            databaseInformationBox->deleteLater();
        }
        qDebug()<<"无法连接数据库！";
        return 1;
    }

    //    testPython();//测试调用python，python文件放在运行文件目录下

    MainInterface mainInterface;
    LoginDialog loginDialog;
    RegisterDialog registerDialog;

    //登陆界面展示
    loginDialog.show();
    //主界面展示
    //mainInterface.show();

    //登陆后--->主界面
    QObject::connect(&loginDialog, &LoginDialog::show2MainWidget,
                     &mainInterface, &MainInterface::initializeInterface);
    //登陆后--->注册界面
    QObject::connect(&loginDialog, &LoginDialog::show2RegisterDialog,
                     &registerDialog, &RegisterDialog::initializeInterface);

    return a.exec();
}
